package com.ck.dao;

import com.ck.model.common.PictureGroup;
import com.ck.model.company.dto.PictureGroupTreeDTO;
import com.ck.model.company.dto.ProgramPictureGroupTreeDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PictureGroupMapper {
	/**
	 * 保存图片组
	 *
	 * @param pictureGroup PictureGroup
	 */
	long insertPictureGroup(PictureGroup pictureGroup);

	/**
	 * 修改图片组
	 *
	 * @param pictureGroup PictureGroup
	 */
	void updatePictureGroupById(PictureGroup pictureGroup);

	/**
	 * 删除图片组
	 *
	 * @param pictureGroupId 图片组ID
	 */
	void deletePictureGroupById(Long pictureGroupId);

	/**
	 * 根据ID获取图片组
	 *
	 * @param pictureGroupId 图片组ID
	 * @return PictureGroup
	 */
	PictureGroup getPictureGroupById(Long pictureGroupId);

	/**
	 * 获取公司的分组树列表
	 *
	 * @param companyCode 商家编码
	 * @return List<PictureGroupTreeDTO>
	 */
	List<PictureGroupTreeDTO> listPictureGroupTree(String companyCode);

	/**
	 * 通过名称查找图片组
	 *
	 * @param companyCode      商家编码
	 * @param pictureGroupName 图片组名称
	 * @return PictureGroup
	 */
	PictureGroup getPictureGroupByName(@Param("companyCode") String companyCode, @Param("pictureGroupName") String pictureGroupName);

	/**
	 * 通过编码获取图片组
	 *
	 * @param companyCode      商家编码
	 * @param pictureGroupCode 图片组编码
	 * @return PictureGroup
	 */
	PictureGroup getPictureGroupByCode(@Param("companyCode") String companyCode, @Param("pictureGroupCode") String pictureGroupCode);

    /**
     * 查询图片组集合
     *
     * @param companyCode 商家编码
     * @return List<ProgramPictureGroupTreeDTO>
     */
    List<ProgramPictureGroupTreeDTO> listProgramPictureGroupTree(String companyCode);

    /**
     * 根据分组ID查询
     *
     * @param companyCode    商家编号
     * @param pictureGroupId 分组ID
     * @return
     */
    ProgramPictureGroupTreeDTO getPictureGroupTreeById(@Param("companyCode") String companyCode, @Param("pictureGroupId") Long pictureGroupId);

	/**
	 * 查询图片组集合
	 *
	 * @param companyCode 商家编码
	 * @return List<ProgramPictureGroupTreeDTO>
	 */
    List<ProgramPictureGroupTreeDTO> listProgramPictureGroupTreeForClient(String companyCode);
}